<?php
/**
 * CK框架 日志接口
 * 所有日志类必须实现该接口
 * @author wujibing<283109896@qq.com>
 * @version   3.0
 * @category   CkFrameWork
 * @package  CkFrameWork
 * @subpackage lib
 */
interface I_CkLog
{
	/**
	 * 写入一个日志
	 * @param int $logType 日志类型
	 * @param string $logMessage 日志信息
	 * @param int $logTime 日志UNIX时间戳
	 * @param array $params日志的其他参数 用于日志类的其他参数扩展
	 */
	public function write($logType,$logMessage,$logTime,$params = array());
}
/**
 * CK框架 日志
 * @author wujibing<283109896@qq.com>
 * @version   3.0
 * @category   CkFrameWork
 * @package  CkFrameWork
 * @subpackage lib
 */
class ckLog
{
	/**
	 * 通知日志
	 * @var int
	 */
	const LOG_NOTICE = 0;
	/**
	 * 警戒性错误: 必须被立即修改的错误
	 * @var int
	 */
	const LOG_ALERT = 1;
	/**
	 * 警告日志
	 * @var int
	 */
	const LOG_WARN = 2;
	/**
	 * 错误日志
	 * @var int
	 */
	const LOG_ERROR = 3;
	/**
	 * 导致系统崩溃无法使用的日志
	 * @var int
	 */
	const LOG_EMERG = 4;
	/**
	 * 日志对象数组
	 * @var string
	 */
	private static $_logObejcts = array();
	/**
	 * 增加一个日志对象
	 * <code>
	 * ckLog::addLogObject(new fileLog("F://log.txt"));
	 * </code>
	 * @param I_CkLog $ckLogObject
	 */
	public static function addLogObject(I_CkLog $ckLogObject)
	{
		self::$_logObejcts[] = $ckLogObject;
	}
	/**
	 * 写入一个日志
	 * <code>
	 * //添加一个处理日志的对象
	 * ckLog::addLogObject(new fileLog("F://log.txt"));
	 * //添加日志
	 * ckLog::write(ckLog::LOG_ERROR,'这是错误日志');
	 * </code>
	 * @param int $logType 日志类型
	 * @param string $logMessage 日志消息
	 */
	public static function write($logType,$logMessage,$params)
	{
		if(self::$_logObejcts) foreach (self::$_logObejcts as $logObject)
		{
			$logObject->write($logType,$logMessage,time(),$params);
		}
	}
}